home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ein / sources / memsrc.lzh / MEM / GUI.C next >
C/C++ Source or Header  |  1994-09-05  |  11KB  |  395 lines

  1. /*<Header>==============================================================
  2. *
  3. *    âüâéâèÄcù╩ò\Ī / "GUI.C"
  4. *
  5. *        [ EIN(tm) project : âTâôâvâïâvâìâOâëâÇ ]
  6. *
  7. *    COPYRIGHT  Nam  1994, All rights reserved.
  8. *
  9. *    özòtüEægì₧üEëⁿò╧üEÅñùÿùpé╖é╫é─Ä⌐ùRüBé╜é╛é╡û│ò█Å╪é┴é╖
  10. *
  11. *-----------------------------------------------------------------------
  12. *    V1.0L01â┐    94.04.15/Nam    âvâìâgâ^âCâv
  13. *    V1.0L30        94.07.19/Nam    EIN(TM)î÷èJö┼
  14. *    V1.0L31        94.09.05/Nam    GM_PURGEé╠âüâéâèèJò·Ä₧é╔ûΓéóìçéφé╣éΘéµéñé╔
  15. *</Header>==============================================================*/
  16. #include    <stdio.h>
  17. #include    <stdlib.h>
  18. #include    <string.h>
  19. #include    <snd.h>
  20. #include    <winb.h>
  21. #include    <te.h>
  22. #include    <fntb.h>
  23. #include    <gui.h>
  24. #include    <egb.h>
  25. //#include    <file_dlg.h>
  26. //#include    <tifflib.h>
  27. #include    <msdos.cf>
  28. #include    <loader.h>
  29. #include    <math.h>
  30. #include    <io.h>
  31. #include    <guidbg.h>
  32. #include    <wgb.h>
  33. // üª é▒é▒é▄é┼é¬ò╜ï╧ôIé╔Ägùpé│éΩéΘâwâbâ_
  34.  
  35. #include    <mos.h>            // é▒é╠âTâôâvâïé┼é╠é▌òKùv(MOS_getTimeé╠ê╫)
  36.  
  37. #include    "..\ein\eintm.h"    // EIN(TM)è╓ÿAâëâCâuâëâèé╠âwâbâ_
  38.  
  39.  
  40. #define    ERROR    (-1)
  41.  
  42. #define    DISPMODE_ICON    (0)
  43. #define    DISPMODE_PANEL    (1)
  44.  
  45. #define    ID_BASE        (0)
  46. #define    ID_BTNBASE    (1)
  47. #define    ID_NUMBASE    (2)
  48. #define    ID_NUM1        (3)
  49. #define    ID_NUM2        (4)
  50. #define    ID_NUM3        (5)
  51.  
  52. #define    PT_NON        (513)
  53. #define    PT_NUM        (514)
  54. #define    PT_MEM        (524)
  55. //#define    PT_MEMMIN    (543)
  56. #define    PT_MEMMIN    (542)
  57. #define    PT_MEMSIZE    (19)
  58. #define    PT_ANIMST    (544)
  59. #define    PT_ANIMEND    (546)
  60. #define    PT_ANGEL    (547)
  61.  
  62. #define    ID_MEMREM    (6)
  63. #define    ID_MEMGET    (7)
  64.  
  65.  
  66. extern    int        ID_ICON[];
  67. extern    int        ID_PANEL[];
  68. extern    int        dispMode;
  69.  
  70. extern    int    ICONmaxId;
  71.  
  72. int        memLot = 0;
  73. char    *memMallocPtr = NULL;
  74. int        memMalloc = 0;
  75. int        memSize   = 0;
  76. int        memLimit = (1024*1024*4);    // âAâjâüü[âVâçâôé≡èJÄné╖éΘÄcâüâéâè(byte)
  77.  
  78. /*===================================================================*/
  79. /* ÅIù╣Åêù¥                                                              */
  80. /*===================================================================*/
  81. int        func_Quit()
  82. {
  83.     extern void SaveResumeFile();
  84.  
  85.     /* âèâWâàü[âÇ */
  86.     SaveResumeFile();
  87.     // âüâéâèèJò·
  88.     purgeMem();
  89.  
  90.     MMI_SetHaltFlag( TRUE ) ;    /*    âCâxâôâgâïü[âvé≡ÅIù╣é│é╣éΘâtâëâO    */
  91.  
  92.     return NOERR ;
  93. }
  94.  
  95. /*===================================================================*/
  96. /*  Å╕ôVò\Ī                                                         */
  97. /*===================================================================*/
  98. int        func_Angel()
  99. {
  100.     // ÉöÆlò\Īé≡é╡é╚éó
  101.     MMI_SendMessage( ID_ICON[ID_NUMBASE], MM_DETACH, 0 );
  102.     MMI_SendMessage( ID_ICON[ID_NUM1], MM_DETACH, 0 );
  103.     MMI_SendMessage( ID_ICON[ID_NUM2], MM_DETACH, 0 );
  104.     MMI_SendMessage( ID_ICON[ID_NUM3], MM_DETACH, 0 );
  105.  
  106.     // ICONâpâ^ü[âôé≡"Å╕ôV"é╔ (âèâWâàü[âÇÅêù¥Æåé╔î─é╬éΩéΘ)
  107.     MMI_SendMessage( ID_ICON[ID_BTNBASE], MM_SETSHAPE, 1, PT_ANGEL);
  108.     MMI_SendMessage( ID_ICON[ID_BTNBASE], MM_SHOW, 0 );
  109.  
  110.     return NOERR ;
  111. }
  112.  
  113. /*===================================================================*/
  114. /* âüâéâèèJò·                                                        */
  115. /*===================================================================*/
  116. int        purgeMem()
  117. {
  118.     // èmò█é╡é─éóé╜âüâéâèé≡èJò·
  119.     if (memLot>0){
  120.         TL_freeLot( memLot );
  121.         memLot = 0;
  122.         memMallocPtr = NULL;
  123.         memMalloc = 0;
  124.     }
  125.     return NOERR;
  126. }
  127.  
  128. /*===================================================================*/
  129. /* âüâéâèèJò·(ûΓéóìçéφé╣éΘ)                                          */
  130. /*===================================================================*/
  131. int    purgeMemInteractive()
  132. {
  133.     static char    *alertStr[]={"mem.exg:\nâüâéâèé≡èJò·é╡é▄é╖?", "éΓé╛éΓé╛", "Ädò√é╚éóé╚éƒ"};
  134.     if (memLot>0){
  135.         /* ìφÅ£ùvïüé╠âAâëü[âgò\Ī */
  136.         if ( MMI_CallMessage(MMI_GetApliId(), GM_ALERT, 
  137.                 AM_ALERT2 | AM_ALERTB1E,(int)alertStr) == 1 ){
  138.             /* âüâéâèèJò· */
  139.             purgeMem();
  140.         }
  141.     }
  142.     return NOERR;
  143. }
  144.  
  145. /*===================================================================*/
  146. /*  âAâCâRâôÅπé╔Äcâüâéâèé≡ÉöÆlò\Ī                                   */
  147. /*===================================================================*/
  148. int    dispMem( m )
  149. {
  150.     static char    ms[8] = "00.000";
  151.     register int    foo, bar;
  152.     
  153.     if ( m < 0 ){
  154.         m = 0;
  155.     }
  156. //    sprintf( memstr, "%2d.%03d", m/1000, m%1000 );
  157.     foo = (m / 1000) % 100;
  158.     bar = ((foo % 100) / 10);
  159.     ms[0] = ( bar > 0 ) ?(bar+'0') :' ';
  160.     ms[1] =  (foo % 10)        +'0';
  161.     foo = (m % 1000);
  162.     ms[3] =  (foo / 100)       +'0';
  163.     ms[4] = ((foo % 100) / 10) +'0';
  164.     ms[5] =  (foo % 10)        +'0';
  165.     MMI_SendMessage( ID_PANEL[ID_MEMREM], MM_SETMSG, 1, ms );
  166.     MMI_SendMessage( ID_PANEL[ID_MEMREM], MM_ERASE, 0 );
  167.     MMI_SendMessage( ID_PANEL[ID_MEMREM], MM_SHOW, 0 );
  168.     return NOERR;
  169. }
  170.  
  171. /*===================================================================*/
  172. /*  âüâéâèöjèⁿè╓Éö(âpâlâïÅπâ{â^âôéµéΦcall)                           */
  173. /*===================================================================*/
  174. int    func_purgeMem()
  175. {
  176.     int    var, min, max, delta, ptColum;
  177.     
  178.     purgeMem();
  179.     dispMem( EIN_checkMem()/1024 );
  180.  
  181.     MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_GETNUMBOX, 5, &var, &min, &max, &delta, &ptColum );
  182.     MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_SETNUMBOX, 5, 0, min, max, delta, ptColum );
  183.     MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_ERASE, 0 );
  184.     MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_SHOW, 0 );
  185.  
  186.     return NOERR;
  187. }
  188. /*===================================================================*/
  189. /*  Äcâüâéâèò\Īè╓Éö(âpâlâïÅπâ{â^âôéµéΦcall)                         */
  190. /*===================================================================*/
  191. int    func_getSize()
  192. {
  193.     int    m;
  194.     int    var, min, max, delta, ptColum;
  195.     
  196.     MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_GETNUMBOX, 5, &var, &min, &max, &delta, &ptColum );
  197.     m = (EIN_checkMem()+memMalloc)/1024;
  198.     if ( var > m ){
  199.         var = m;
  200.         MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_SETNUMBOX, 5, var, min, max, delta, ptColum );
  201.     }
  202.     dispMem( m - var );
  203.  
  204.     return NOERR;
  205. }
  206. /*===================================================================*/
  207. /*  âüâéâèĵô╛è╓Éö(âpâlâïÅπâ{â^âôéµéΦcall)                           */
  208. /*===================================================================*/
  209. int    func_mallocMem()
  210. {
  211.     int    var, min, max, delta, ptColum;
  212.     
  213.     MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_GETNUMBOX, 5, &var, &min, &max, &delta, &ptColum );
  214.     if (memLot>0){
  215.         TL_freeLot( memLot );
  216.         memLot = 0;
  217.         memMallocPtr = NULL;
  218.         memMalloc = 0;
  219.     }
  220.     // ÄwÆΦèmò█é╠ê╫é╠âüâéâèlotĵô╛
  221.     if ( (memLot=TL_getLot())<0 ){
  222.         return ERROR;
  223.     }
  224.     for ( ; var>0; var-- ){
  225.         memMalloc = var * 1024;
  226.         if ( (memMallocPtr=TL_mallocMemory(memLot,memMalloc))!=NULL ){
  227.             MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_SETNUMBOX, 5, var, min, max, delta, ptColum );
  228.             MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_ERASE, 0 );
  229.             MMI_SendMessage( ID_PANEL[ID_MEMGET], MM_SHOW, 0 );
  230.             break;
  231.         }
  232.     }
  233.     dispMem( EIN_checkMem()/1024 );
  234.  
  235.     return NOERR;
  236. }
  237.  
  238. /*===================================================================*/
  239. /*  âpâlâïò\Ī                                                       */
  240. /*===================================================================*/
  241. int    func_Panel()
  242. {
  243.     char        clp[EINCLIPSIZE];
  244.     register int    ret;
  245.  
  246.     // è∙é╔âpâlâïé¬ò\Īé│éΩé─éóéΘé╚éτë╜éαé╡é╚éó
  247.     if ( dispMode==DISPMODE_PANEL){
  248. //        printf("dispMode!=0\n");
  249.         return NOERR;
  250.     }
  251.     dispMode=DISPMODE_PANEL;
  252.  
  253.     //    âpâlâïé≡ATTACHé╖éΘ
  254.     ret = MMI_SendMessage( ID_PANEL[0], MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  255.  
  256.     EIN_clipOpen( clp );
  257.     MMI_SendMessage( ID_PANEL[0], MM_SHOW, 0 ) ;
  258.     MMI_SendMessage( ID_PANEL[0], MM_WAKE, 0 ) ;
  259.     dispMem( EIN_checkMem()/1024 );
  260.     EIN_clipClose( clp );
  261.  
  262.     return NOERR;
  263. }
  264.  
  265. /*===================================================================*/
  266. /*  âpâlâïÅ┴ïÄ                                                       */
  267. /*===================================================================*/
  268. int    func_Close()
  269. {
  270.     char        clp[EINCLIPSIZE];
  271.  
  272.     // âpâlâïé¬ò\Īé│éΩé─éóé╚éóé╚éτë╜éαé╡é╚éó
  273.     if ( dispMode!=DISPMODE_PANEL){
  274.         return ERROR;
  275.     }
  276.     dispMode=DISPMODE_ICON;
  277.     //    PANELâEâBâôâhâDé≡DETACHé╖éΘ
  278.     MMI_SendMessage( ID_PANEL[0], MM_SLEEP, 0 ) ;
  279.     MMI_SendMessage( ID_PANEL[0], MM_ERASE, 0 )